# include <bits/stdc++.h>
# define N 105
using namespace std;
int n,k;
int a[N];
vector<int> v[200005];
vector<int> ss[N];
int s[200005];
int cnt;
map<vector<int>,int> id[N];
void dfs(int x,int lst,int sum)
{
    if(x==k+1)
    {
        cnt++;
        v[cnt].resize(k);
        for(int i=0;i<k;i++)
            v[cnt][i]=a[i+1];
        id[sum][v[cnt]]=cnt;
        ss[sum].push_back(cnt);
        s[cnt]=sum;
        return ;
    }
    for(int i=0;i<=lst;i++)
        a[x]=i,dfs(x+1,i,sum+i);
}
int num[N];
vector<vector<long long>> f;
int to[200005][N];
int main()
{
    freopen("diyiti.in","r",stdin);
    freopen("diyiti.out","w",stdout);
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        cin>>num[i];
    sort(num+1,num+n+1);
    dfs(1,n/k,0);
    f.resize(cnt+10);
    for(int i=1;i<=cnt;i++)
        f[i].resize(k+5,1e15);
    f[1][0]=0;
    num[0]=-1;
    for(int i=1;i<cnt;i++)
    {
        auto now=v[i];
        for(int j=1;j<=k;j++)
        {
            if((j!=1 && now[j-1]==now[j-2]) || now[j-1]==n/k)
            {
                to[i][j]=-1;
                continue;
            }
            now[j-1]++;
            to[i][j]=id[s[i]+1][now];
            now[j-1]--;
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(auto id:ss[i-1])
        {
            if(num[i]==num[i-1])
            {
                for(int j=0;j<k;j++)
                    if(f[id][j]<1e14)
                    {
                        f[id][j+1]=min(f[id][j],f[id][j+1]);
                        int p=j+1;
                        if(to[id][p]!=-1)
                        {
                            int newid=to[id][p];
                            long long add=0;
                            if(v[newid][p-1]==1)
                                add-=num[i];
                            if(v[newid][p-1]==n/k)
                                add+=num[i];
                            f[newid][p]=min(f[newid][p],f[id][j]+add);
                        }
                    }
            }
            else
            {
                long long res=1e15;
                for(int j=0;j<=k;j++)
                    res=min(res,f[id][j]);
                if(res>1e14)
                    continue;
                for(int p=1;p<=k;p++)
                    if(to[id][p]!=-1)
                    {
                        int newid=to[id][p];
                        long long add=0;
                        if(v[newid][p-1]==1)
                            add-=num[i];
                        if(v[newid][p-1]==n/k)
                            add+=num[i];
                        f[newid][p]=min(f[newid][p],res+add);
                    }
            }
        }
    }
    long long ans=1e15;
    for(int i=0;i<=k;i++)
        ans=min(ans,f[cnt][i]);
    if(ans>1e14)
        cout<<-1<<endl;
    else
        cout<<ans<<endl;
    return 0;
}